// src/pages/components/starRating/starRating.js
// 此组件需要传入score, disabled(是否开启交互模式)，styles星星样式（margin、color、font-size）
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    disabled: {
      type: Boolean,
      value: false, // 是否开启交互模式
    },
    score: {
      type: String,
      value: 0, // 属性初始值（可选），如果未指定则会根据类型选择一个
      observer(newVal, oldVal) {
        if (newVal) {
          const renderData = {
            "stars": this.starCount(newVal)
          };
          this.setData(renderData);
        }
      }
    },
    styles: {
      type: String,
      value: '',
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    stars: ''
  },

  /**
   * 组件的方法列表
   */
  ready() {
    this.setData({ stars: this.starCount(this.data.score) });
  },
  methods: {
    //计算行星显示规则
    starCount(originStars) {
      //计算星星显示需要的数据，用数组stars存储五个值，分别对应每个位置的星星是全星、半星还是空星
      var starNum = originStars * 10 / 10, stars = [], i = 0;
      do {
        if (starNum >= 1) {
          stars[i] = 'full';
        } else if (starNum >= 0.5) {
          stars[i] = 'half';
        } else {
          stars[i] = 'no';
        }
        starNum--;
        i++;
      } while (i < 5);
      return stars;
    },
    //点击左边,半颗星
    selectLeft (e) {
      let key = e.currentTarget.dataset.key
      if (this.data.key == 0.5 && e.currentTarget.dataset.key == 0.5) {
        //只有一颗星的时候,再次点击,变为0颗
        key = 0;
      }
      // count = key
      this.setData({
        stars: this.starCount(key)
      })
      this.triggerEvent('selectCallback', { feedback: key });
    },
    //点击右边,整颗星
    selectRight(e) {
      const key = e.currentTarget.dataset.key
      // count = key
      this.setData({
        stars: this.starCount(key)
      })
      this.triggerEvent('selectCallback', { feedback: key });
    },
  }
})

